from typing import TypeVar, Generic, List

T = TypeVar('T')  # 定义类型变量

# 使用类型变量的函数
def first_element(items: List[T]) -> T:
    return items[0]

# 使用泛型的类
class Stack(Generic[T]):
    def __init__(self) -> None:
        self.items: List[T] = []
        
    def push(self, item: T) -> None:
        self.items.append(item)
        
    def pop(self) -> T:
        return self.items.pop()
        
    def empty(self) -> bool:
        return not self.items

# 使用示例
int_stack = Stack[int]()  # 整数栈
int_stack.push(1)
int_stack.push(2)